<?php
/**
* @package   auto_occasion
* @subpackage annonce
* @author    CMS
* @copyright 2011
* @license    All rights reserved
*/

class BoEquipementCtrl extends jController {

    public $pluginParams = array(
        '*'=>array('auth.required'=>true)
        );

    /**
    * Liste les équipements et ses choix
    */
    function index() {
        $rep = $this->getResponse('html');

        jClasses::inc("commun~common");
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.ask.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.jeditable.js');

        $rep->menusActifs = adminHtmlResponse::MENU_ANNONCES ;

        $rep->bodyTpl = 'annonce~BoCategEquipement';

        $rep->body->assignZone('listeCategEquipement', 'annonce~listeCategEquipement');

        return $rep;
    }

    /**
    * Liste les équipements et ses choix
    */
    function liste() {
        $rep = $this->getResponse('html');

        jClasses::inc("annonce~annonceEquipementSrv");
        jClasses::inc("commun~common");

        $rep->menusActifs = adminHtmlResponse::MENU_ANNONCES ;

        $offset  =  $this->intParam('offset',0,true);
        $idCateg  =  $this->intParam('iId',0);

        $nbitemparpage = EQUIPEMENT_NBITEMPARPAGE;

        $liste            = annonceEquipementSrv::listeDetailWithChoices(0, $idCateg);
        $categorie        = common::chargeParId($idCateg, 'categ_equipement');

        $rep->body->assign('liste',$liste);
        $rep->body->assign('idCateg',$idCateg);
        $rep->body->assign('categorie',$categorie);
        $rep->body->assign('nbitemparpage', $nbitemparpage);
        $rep->body->assign('page', $offset);

        $rep->bodyTpl = 'annonce~BoEquipementList';

         return $rep;
    }


    /**
     * Ajout / modification d'un équipement
     *
     *
     */
     function editer() {
        $rep = $this->getResponse('html');
        $rep->menusActifs = adminHtmlResponse::MENU_ANNONCES ;

        jClasses::inc("annonce~annonceEquipementSrv");
        jClasses::inc("commun~common");

        $id = $this->param('id', '');
        $idCateg = $this->param('idCateg', '');

        $equipement = ($id) ? annonceEquipementSrv::listeDetailWithChoices($id,$idCateg) : annonceEquipementSrv::init();
        $equipement = ($id) ? $equipement[0] : $equipement;

        $categorie        = common::chargeParId($idCateg, 'categ_equipement');

        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'] . 'design/back/js/jquery-1.3.2.min.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'] . 'design/back/js/jquery.autocomplete.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'] . 'design/back/js/localdata.js');

        $rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/css/jquery.autocomplete.css');
        $rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/css/thickbox.css');


        $liste =  annonceEquipementSrv::getChoixList(); 
        
        
        $rep->bodyTpl = 'annonce~BoEquipementEdit';
        $rep->body->assign('equipement', $equipement);
        $rep->body->assign('categorie',$categorie);
        $rep->body->assign('id', $id);
        $rep->body->assign('idCateg', $idCateg);
        
        $rep->body->assign('listechoix', json_encode($liste));

        return $rep;
    }

     /** 
      * Sauvegarde d'un équipemeent 
      * Redirection vers page liste équipement après sauvegarde 
     */
     function sauvegarder() {
        $rep = $this->getResponse('redirect');

             
        jClasses::inc("annonce~annonceEquipementSrv");
        $id      = $this->param('id', '');
        $idCateg = $this->param('idCateg', '');

         $params        = $this->params();
         // récupération des choix du formulaire
         $choix         = annonceEquipementSrv::saveEquipementChoix($params);
         $equipement    = $this->param("libelle","");

         if ($id) {
            $id_equipement = $id;
            // Update du libelle de l'équipement
            $equipementAModifier                      = new stdClass();
            $equipementAModifier->id                  = $id;
            $equipementAModifier->lib_equipement      = $equipement;
            $equipementAModifier->id_categ_equipement = $idCateg;
            annonceEquipementSrv::modifier($equipementAModifier);

            // Suppression des enregistrement correspondants à l'id de l'équipement ds a table ao_equipement_choix
            annonceEquipementSrv::removeEquipementChoices($id);


         } else {

            $id_equipement = annonceEquipementSrv::getEquipementId($equipement,$idCateg);

         }

         if (isset($choix) && $choix[0]) {
             
            // récupère les choix déja présents en base
             $listechoixDejaPresent    = annonceEquipementSrv::getChoixListWithId();

             // objet contenant les nouveaux choix à introduire en base, et les ids des anciens choix
             $choixAAjouterEtIdPresent = annonceEquipementSrv::getChoice($choix, $listechoixDejaPresent);

             // enregistrement des nouveaux choix
             if (sizeof ($choixAAjouterEtIdPresent->new_choices)) {
                 annonceEquipementSrv::insertNewChoices($choixAAjouterEtIdPresent->new_choices);

                 // récupération des ids des nouveaux choix enregistrés pour la liaison avec avec la table : ao_equipement_choix
                 $idsNewChoiceCreated = annonceEquipementSrv::getIdsChoixFromLibChoix($choixAAjouterEtIdPresent->new_choices);
             } else {
                 $idsNewChoiceCreated = array();
             }
            
             // Rassemble les nouveaux et anciens id de choix
             if (count($choixAAjouterEtIdPresent->ids)) {
                 foreach ($choixAAjouterEtIdPresent->ids as $addId) {
                    array_push($idsNewChoiceCreated, $addId);
                 }
             }

             // insertion des id d'equipement et de choix dans la table equipement choix
             annonceEquipementSrv::insertIdEquipmentChoix($id_equipement, $idsNewChoiceCreated);
         }
        $rep->action = 'annonce~BoEquipement:liste';
        $rep->params = array('iId' => $idCateg) ;

         return $rep;
    }


    /**
    * Supprime un équipement
    */
    function supprimer() {
        $rep = $this->getResponse('redirect');

        jClasses::inc('commun~common');
        jClasses::inc("annonce~annonceEquipementSrv");

        $idCat  = $this->intParam('idCateg');
        $idEqui = $this->intParam('idEq');

        common::supprimer($idEqui, 'ao_equipement');
        annonceEquipementSrv::removeEquipementChoices($idEqui);

        $rep->action = 'annonce~BoEquipement:liste';
        $rep->params = array('iId'=>$idCat);

        return $rep;
    }



   }

